package com.feiyi.app.glideutils;

import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;

import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.request.animation.GlideAnimation;
import com.bumptech.glide.request.target.SimpleTarget;
import com.feiyi.app.R;


import java.io.File;

/**
 * Created by wwj on 2017/6/8.
 * 网络图片的工具类
 *
 */
public class GlideImgManager {
     /**
      * 加载图片
      * 动态设置空图 错图
      * */
    public static void loadImage(Context context, String url, int erroImg, int emptyImg, ImageView iv) {
        //原生 API
        Glide.with(context).load(url).crossFade().placeholder(emptyImg).error(erroImg).into(iv);
    }
    /**
     * 加载图片
     * 默认空图错图
     * crossFade() 设置淡入淡出效果，默认300ms，可以传参
     * */
    public static void loadImage(Context context, String url, ImageView iv) {
        //原生 API
        Glide.with(context).load(url).crossFade().centerCrop().placeholder(R.mipmap.item_bg).dontAnimate().error(R.mipmap.item_bg).into(iv);
    }
    public static void loadImage1(Context context, String url, ImageView iv) {
        //原生 API
        Glide.with(context).load(url).asBitmap().placeholder(R.mipmap.item_bg).error(R.mipmap.item_bg).into(iv);
    }

    /**
     * 个人中心头像加载
     * @param context
     * @param url
     * @param iv
     */
    public static void loadUserImage(Context context, String url, ImageView iv) {
        Glide.with(context).load(url).asBitmap().placeholder(R.mipmap.icon_register_defult_head)
                .error(R.mipmap.icon_register_defult_head).into(iv);
    }
    /**
     * 加载gif图片
     * DiskCacheStrategy.SOURCE 读取缓存
     * */
    public static void loadGifImage(Context context, String url, ImageView iv) {
        Glide.with(context).load(url).asGif().diskCacheStrategy(DiskCacheStrategy.SOURCE).placeholder(R.mipmap.ic_launcher).error(R.mipmap.ic_launcher).into(iv);
    }
    /**
     * 加载圆形图片
     *
     * */
    public static void loadCircleImage(Context context, String url, ImageView iv) {
        Glide.with(context).load(url).crossFade(1000).placeholder(R.mipmap.ic_launcher).error(R.mipmap.ic_launcher).transform(new GlideCircleTransform(context)).into(iv);
    }
    /**
     * 加载圆角图片
     *
     * */
    public static void loadRoundCornerImage(Context context, String url, ImageView iv) {
        Glide.with(context).load(url).placeholder(R.mipmap.ic_launcher).error(R.mipmap.ic_launcher).transform(new GlideRoundTransform(context,10)).into(iv);
    }

    /**
     * 加载file图片
     *
     * */
    public static void loadImage(Context context, final File file, final ImageView imageView) {
        Glide.with(context)
                .load(file)
                .into(imageView);
    }
    /**
     * 加载本地普通图片
     *
     * */
    public static void loadImage(Context context, final int resourceId, final ImageView imageView) {
        Glide.with(context)
                .load(resourceId)
                .into(imageView);
    }
    /**
     * 设置FrameLayout
     * */
    public static void showLayoutImageView(Context context, int errorimg, String url,
                                           final FrameLayout frameBg) {
        Glide.with(context).load(url).asBitmap().error(errorimg)// 设置错误图片
                .diskCacheStrategy(DiskCacheStrategy.RESULT)// 缓存修改过的图片
                .placeholder(errorimg)// 设置占位图
                .into(new SimpleTarget<Bitmap>() {
                    @SuppressLint("NewApi")
                    @Override
                    public void onResourceReady(Bitmap loadedImage,
                                                GlideAnimation<? super Bitmap> arg1) {
                        BitmapDrawable bd = new BitmapDrawable(loadedImage);
                        frameBg.setBackground(bd);
                    }
                    @Override
                    public void onLoadFailed(Exception e, Drawable errorDrawable) {
                        // TODO Auto-generated method stub
                        super.onLoadFailed(e, errorDrawable);
                        frameBg.setBackgroundDrawable(errorDrawable);
                    }
                });
    }
    /**
     * 设置LinearLayout
     * */
    public static void showLayoutImageView(Context context, int errorimg, String url,
                                           final LinearLayout frameBg) {
        Glide.with(context).load(url).asBitmap().error(errorimg)// 设置错误图片
                .diskCacheStrategy(DiskCacheStrategy.RESULT)// 缓存修改过的图片
                .placeholder(errorimg)// 设置占位图
                .into(new SimpleTarget<Bitmap>() {
                    @SuppressLint("NewApi")
                    @Override
                    public void onResourceReady(Bitmap loadedImage,
                                                GlideAnimation<? super Bitmap> arg1) {
                        BitmapDrawable bd = new BitmapDrawable(loadedImage);
                        frameBg.setBackground(bd);
                    }

                    @Override
                    public void onLoadFailed(Exception e, Drawable errorDrawable) {
                        // TODO Auto-generated method stub
                        super.onLoadFailed(e, errorDrawable);
                        frameBg.setBackgroundDrawable(errorDrawable);
                    }

                });
    }
    /**
     * 设置RelativeLayout
     * */
    public static void showLayoutImageView(Context context, int errorimg, String url,
                                           final RelativeLayout frameBg) {
        Glide.with(context).load(url).asBitmap().error(errorimg)// 设置错误图片
                .diskCacheStrategy(DiskCacheStrategy.RESULT)// 缓存修改过的图片
                .placeholder(errorimg)// 设置占位图
                .into(new SimpleTarget<Bitmap>() {
                    @SuppressLint("NewApi")
                    @Override
                    public void onResourceReady(Bitmap loadedImage,
                                                GlideAnimation<? super Bitmap> arg1) {
                        BitmapDrawable bd = new BitmapDrawable(loadedImage);
                        frameBg.setBackground(bd);
                    }

                    @Override
                    public void onLoadFailed(Exception e, Drawable errorDrawable) {
                        // TODO Auto-generated method stub
                        super.onLoadFailed(e, errorDrawable);
                        frameBg.setBackgroundDrawable(errorDrawable);
                    }

                });
    }
    /**
     * 设置RelativeLayout
     * 高斯模糊
     * */
    public static void showLayoutImageViewBlur(Context context, int errorimg,
                                               String url, final RelativeLayout bgLayout) {
        Glide.with(context).load(url).asBitmap().error(errorimg)
                // 设置错误图片
                .diskCacheStrategy(DiskCacheStrategy.RESULT)
                // 缓存修改过的图片
                .placeholder(errorimg)
                .transform(new BlurTransformation(context))// 高斯模糊处理
                // 设置占位图

                .into(new SimpleTarget<Bitmap>() {

                    @SuppressLint("NewApi")
                    @Override
                    public void onResourceReady(Bitmap loadedImage,
                                                GlideAnimation<? super Bitmap> arg1) {
                        BitmapDrawable bd = new BitmapDrawable(loadedImage);

                        bgLayout.setBackground(bd);

                    }
                    @Override
                    public void onLoadFailed(Exception e, Drawable errorDrawable) {
                        // TODO Auto-generated method stub
                        super.onLoadFailed(e, errorDrawable);

                        bgLayout.setBackgroundDrawable(errorDrawable);
                    }
                });
    }
    /**
     * 设置RelativeLayout
     * 高斯模糊
     * */
    public static void showLayoutImageViewBlur(Context context, int errorimg,
                                               final int resourceId, final RelativeLayout bgLayout) {
        Glide.with(context).load(resourceId).asBitmap().error(errorimg)
                // 设置错误图片
                .diskCacheStrategy(DiskCacheStrategy.RESULT)
                // 缓存修改过的图片
                .placeholder(errorimg)
                .transform(new BlurTransformation(context))// 高斯模糊处理
                // 设置占位图

                .into(new SimpleTarget<Bitmap>() {

                    @SuppressLint("NewApi")
                    @Override
                    public void onResourceReady(Bitmap loadedImage,
                                                GlideAnimation<? super Bitmap> arg1) {
                        BitmapDrawable bd = new BitmapDrawable(loadedImage);

                        bgLayout.setBackground(bd);

                    }
                    @Override
                    public void onLoadFailed(Exception e, Drawable errorDrawable) {
                        // TODO Auto-generated method stub
                        super.onLoadFailed(e, errorDrawable);

                        bgLayout.setBackgroundDrawable(errorDrawable);
                    }
                });
    }
    /**
     * 设置ViewGroup
     * 高斯模糊
     * */
    public static void showLayoutImageViewBlur(Context context, int errorimg,
                                               final int resourceId, final ViewGroup bgLayout) {
        Glide.with(context).load(resourceId).asBitmap().error(errorimg)
                // 设置错误图片
                .diskCacheStrategy(DiskCacheStrategy.RESULT)
                // 缓存修改过的图片
                .placeholder(errorimg)
                .transform(new BlurTransformation(context))// 高斯模糊处理
                // 设置占位图

                .into(new SimpleTarget<Bitmap>() {

                    @SuppressLint("NewApi")
                    @Override
                    public void onResourceReady(Bitmap loadedImage,
                                                GlideAnimation<? super Bitmap> arg1) {
                        BitmapDrawable bd = new BitmapDrawable(loadedImage);
                        bgLayout.setBackground(bd);

                    }
                    @Override
                    public void onLoadFailed(Exception e, Drawable errorDrawable) {
                        // TODO Auto-generated method stub
                        super.onLoadFailed(e, errorDrawable);

                        bgLayout.setBackgroundDrawable(errorDrawable);
                    }
                });
    }
}
